﻿namespace Jim.K3Cloud;

/// <summary>
/// 审核
/// </summary>
[Sdk("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit", "审核")]
public class K3CloudAuditRequest : ISdkRequest<K3CloudAuditResponse>, IK3CloudCustomRequest
{
    public string FormId { get; set; }
    /// <summary>
    /// 创建者组织内码（非必录）
    /// </summary>
    public int CreateOrgId { get; set; }
    /// <summary>
    /// 单据编码集合，数组类型，格式：[No1,No2,...]（使用编码时必录）
    /// </summary>
    public string[] Numbers { get; set; }
    /// <summary>
    /// 单据内码集合，字符串类型，格式："Id1,Id2,..."（使用内码时必录）
    /// </summary>
    public string Ids { get; set; }
    /// <summary>
    /// 交互标志集合，字符串类型，分号分隔，格式："flag1;flag2;..."（非必录） 例如（允许负库存标识：STK_InvCheckResult）
    /// </summary>
    public string InterationFlags { get; set; }
    /// <summary>
    /// 是否启用网控，布尔类型，默认false（非必录）
    /// </summary>
    public bool NetworkCtrl { get; set; }
    /// <summary>
    /// 是否检验单据关联运行中的工作流实例，布尔类型，默认false（非必录）
    /// </summary>
    public bool IsVerifyProcInst { get; set; }
    /// <summary>
    /// 否允许忽略交互，布尔类型，默认true（非必录）
    /// </summary>
    public bool IgnoreInterationFlag { get; set; } = true;

    public object QueryParams()
    {
        return new
        {
            FormId = FormId,
            Data = new
            {
                CreateOrgId = CreateOrgId,
                Numbers = Numbers,
                Ids = Ids,
                InterationFlags = InterationFlags,
                NetworkCtrl = NetworkCtrl,
                IsVerifyProcInst = IsVerifyProcInst,
                IgnoreInterationFlag = IgnoreInterationFlag,
            }
        };
    }


    public void Validate()
    {
    }
}

/// <summary>
/// 反审核
/// </summary>
[Sdk("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.UnAudit", "反审核")]
public class K3CloudUnAuditRequest : ISdkRequest<K3CloudUnAuditResponse>  ,IK3CloudCustomRequest
{
    public string FormId { get; set; }
    /// <summary>
    /// 创建者组织内码（非必录）
    /// </summary>
    public int CreateOrgId { get; set; }
    /// <summary>
    /// 单据编码集合，数组类型，格式：[No1,No2,...]（使用编码时必录）
    /// </summary>
    public string[] Numbers { get; set; }
    /// <summary>
    /// 单据内码集合，字符串类型，格式："Id1,Id2,..."（使用内码时必录）
    /// </summary>
    public string Ids { get; set; }
    /// <summary>
    /// 交互标志集合，字符串类型，分号分隔，格式："flag1;flag2;..."（非必录） 例如（允许负库存标识：STK_InvCheckResult）
    /// </summary>
    public string InterationFlags { get; set; }
    /// <summary>
    /// 是否启用网控，布尔类型，默认false（非必录）
    /// </summary>
    public bool NetworkCtrl { get; set; } = false;
    /// <summary>
    /// 是否检验单据关联运行中的工作流实例，布尔类型，默认false（非必录）
    /// </summary>
    public bool IsVerifyProcInst { get; set; } = false;
    /// <summary>
    /// 否允许忽略交互，布尔类型，默认true（非必录）
    /// </summary>
    public bool IgnoreInterationFlag { get; set; } = true;

    public object QueryParams()
    {
        return new
        {
          FormId = FormId,
          Data = new {
              CreateOrgId = CreateOrgId,
              Numbers = Numbers,
              Ids = Ids,
              InterationFlags = InterationFlags,
              NetworkCtrl= NetworkCtrl,
              IsVerifyProcInst = IsVerifyProcInst,
              IgnoreInterationFlag = IgnoreInterationFlag,
          }
        };
    }

    public void Validate()
    {
    }
}




public class K3CloudAuditResponse : SdkResponse<List<ResponseStatusEntity>>
{
}


public class K3CloudUnAuditResponse : SdkResponse<List<ResponseStatusEntity>>
{
}